Control cards, such as smart cards, often include some form of readable storage means such as a magnetic strip, an optical code (e.g. a bar code) or an on-board memory chip, for storing data (e.g. a personal identification number) associated with the card. Such control cards can be generically referred to as memory cards. However, control cards including a storage means in the form of an on-board memory chip are generally referred to as ‘smart cards’. The data stored in the storage means is generally read by some form of terminal device, which includes a magnetic read head, for example.
Some smart cards include a microprocessor integrally formed within the smart card. These smart cards are generally referred to as microprocessor or central processing unit (CPU) cards. Some CPU cards include a user interface printed on at least one surface of the card and a a data structure describing the interface, where the data structure is stored in a memory integrally formed within the CPU card.
There are several existing smart card systems, which utilise both memory cards and CPU smart cards including a user interface. One of these existing smart card systems utilises a reader device including a transparent touch screen positioned above the smart card so that user interface elements printed on a surface of the smart card are visible underneath the transparent touch screen. For both memory and CPU cards, the reader device is configured to determine the position of a touch on the transparent screen and use data structure information stored within the memory of the card to determine which user interface elements have been pressed. Data associated with the pressed user interface element is then sent as a data string associated with the selected user interface element to a remote application.
Accordingly, the above described smart cards effectively act as an interface to allow a user to interact with applications executing remotely from the smart card and associated reader.
CPU cards can be configured with one or more software application programs executing within the CPU of the card and being stored in a storage means of the card. Such CPU cards require a multi-application operating system, such as Multos or JavaCard which allow multiple applications to be simultaneously loaded and running on the CPU card. CPU cards executing a multi-application operating system generally include one or more firewalls preventing applications from accessing memory belonging to the operating system or to other applications.
One known multi-application CPU card includes a delegation feature, which details the mechanisms used by a first application to invoke a second application and to share data between the two applications. This system includes a complex data format and associated software interface in order to allow an operating system executing on the CPU card to issue commands from one of the applications to another of the applications.
Several standard software interfaces have been developed in order to simplify the process of issuing commands to applications running on a CPU card. However, these standard software interfaces are inaccessible to a user of a CPU card so that when the CPU card is used for a particular application, an associated terminal device must be programmed so that correct commands are issued to the CPU card in response to user input. If the same CPU card is used in a different smart card system, the second system is generally unable to generate the appropriate commands from the same user input due to lack of knowledge about the specific applications resident on the CPU card. As a result, a CPU card and associated application are not portable and can not be used on different smart card systems.